import store from '@/store'
// import router from '@/router'
import { showError } from './messages'

export const isGotoLogin = (err) => {
  // console.log('err', err)
  // console.log('errorGotoLogin', store.getters.errorGotoLogin)
  return err === store.getters.errGotoLogin
}

export const isAccessDeny = (err) => {
  return err === store.getters.errDeny
}

export const checkAccess = (data, page) => {
  const deny = isAccessDeny(data['error'])
  // console.log('deny', deny, page)
  if (deny) {
    // 没有权限，跳转
    // const data = {
    //   path: '/access/deny'
    // }
    // router.replace(data)
    // 改为直接显示没有权限页面
    showDenyPage(page)
    // console.log(page)
    return true
  }
  return false
}

export const gotoLogin = () => {
  store.dispatch('user/cleanToken')
  // router.push('/login')
  location.reload()
}

// export const goToLogin = () => {
//   MessageBox.confirm('您的登录信息已经失效, 点击取消按钮定留在当前页, 点击重新登录按钮转到登录页', '确认', {
//     confirmButtonText: '重新登录',
//     cancelButtonText: '取消',
//     type: 'warning'
//   }).then(() => {
//     store.dispatch('user/resetToken').then(() => {
//       location.reload()
//     })
//   })
// }

export const showDenyPage = (page) => {
  let p = page
  while (p) {
    if (p.deny) {
      if (Object.prototype.toString.call(p.deny) === '[object Function]') {
        p.deny()
        break
      }
    }
    p = p.$parent
  }
}

export default function(Vue, options) {
  /**
   * 判断返回值是否成功
   * @param {Object} 含有 error(String) 错误信息的对象
   */
  Vue.prototype.$rjok = function({ error }) {
    if (isGotoLogin(error)) {
      gotoLogin()
      return false
    }
    if (isAccessDeny(error)) {
      // 没有操作权限
      // showError('没有权限')
      showDenyPage(this)
      return false
    }
    if (error) {
      showError(error)
      return false
    }
    return true
  }
}
